package com.hzz.api.examine;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.github.pagehelper.PageInfo;
import com.hzz.dto.analysis.ExamineResultLevelStatDto;
import com.hzz.dto.analysis.ExamineResultRankStatDto;
import com.hzz.dto.examine.ApiExamineResultDto;
import com.hzz.dto.examine.ExamineResultDto;
import com.hzz.framework.Response;
/**
 * <p>目标考核-考核结果 业务处理接口类。
 */
public interface IExamineResultService {
    /**
     * <p>信息编辑。
     */
    Response saveOrUpdateData(ExamineResultDto dto) throws Exception;

    /**
     * <p>物理删除。
     */
    String deleteData(ExamineResultDto dto) throws Exception;


    /**
     * <li>逻辑删除。
     */
    String deleteDataById(ExamineResultDto dto) throws Exception;

    /**
     * <p>信息列表 分页。
     */
    PageInfo findDataIsPage(ExamineResultDto dto) throws Exception;

    /**
     * <p>信息列表。
     */
    List<ExamineResultDto> findDataIsList(ExamineResultDto dto) throws Exception;


    /**
     * <p>信息详情。
     */
    ExamineResultDto findDataById(ExamineResultDto dto) throws Exception;

	/**
	 * 分页查询下级考核结果列表
	 * 
	 * @param dto
	 * @return
	 * @throws Exception
	 */
	PageInfo findJuniorDataIsPage(ExamineResultDto dto) throws Exception;

	/**
	 * 保存领导评分
	 * 
	 * @param dto
	 * @return
	 * @throws Exception
	 */
	Response updateLeaderScore(ExamineResultDto dto) throws Exception;

	/**
	 * 根据行政区划和考核时间段查询考核结果给前端APP
	 * 
	 * @param dto
	 * @return
	 */
	List<ApiExamineResultDto> findDataForApp(ExamineResultDto dto);

	/**
	 * 考核排名统计
	 * 
	 * @param dto
	 * @return
	 */
	List<ExamineResultRankStatDto> statResultRankByParentAreaId(ExamineResultRankStatDto dto);

	/**
	 * 考核等级占比统计
	 * 
	 * @param dto
	 * @return
	 */
	List<ExamineResultLevelStatDto> statResultLevelByParentAreaId(ExamineResultLevelStatDto dto);

	/**
	 * 获取上年度考核前5名和后5名
	 * 
	 * @param type
	 *            1前5名，2后5名
	 * @return
	 */
	Map<String, BigDecimal> getLastYearRank5(Integer type);
}